public class Visitor extends mini1BaseVisitor<Void>{
    long octal=0;
    long hexa=0;
    @Override
    public Void visitCompUnit(mini1Parser.CompUnitContext ctx) {
        // 调用默认的 visit 方法即可
        return super.visitCompUnit(ctx);
    }
    @Override
    public Void visitFuncDef(mini1Parser.FuncDefContext ctx) {
        // 调用默认的 visit 方法即可
        System.out.println("define dso_local i32 @main(){");
        return super.visitFuncDef(ctx);
    }
    @Override
    public Void visitStmt(mini1Parser.StmtContext ctx) {
        // 调用默认的 visit 方法即可
        System.out.print("    ret i32 ");
        visit(ctx.number());
        System.out.println("}");
        return null;
    }
    @Override
    public Void visitNumber(mini1Parser.NumberContext ctx) {
        if(ctx.decimalconst()!=null){
            visit(ctx.decimalconst());
        }else if(ctx.hexadecimalconst()!=null){
            visit(ctx.hexadecimalconst());
        }else if(ctx.octalconst()!=null){
            visit(ctx.octalconst());
        }
        System.out.println();
        return null;
    }
    @Override
    public Void visitDecimalconst(mini1Parser.DecimalconstContext ctx) {
        // 调用默认的 visit 方法即可

        System.out.print(String.valueOf(ctx.Decimalconst()));
        return null;
    }


    @Override
    public Void visitOctalconst(mini1Parser.OctalconstContext ctx) {

        octal=Long.parseLong(String.valueOf(ctx.Octalconst()),8);
        System.out.print(octal);
        return null;
    }

    @Override
    public Void visitHexadecimalconst(mini1Parser.HexadecimalconstContext ctx) {
        String a=String.valueOf(ctx.Hexadecimalconst());
        a=a.substring(2);
        hexa=Long.parseLong(a,16);
        System.out.print(hexa);
        return null;
    }




}
